<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1! +2! +3!+ 4!
        // 1*1 
        // 1*2
        // 1*2*3
        //1*2*3*4
        var sums1 = 0
        for(var i=1;i<=10;i++){
            var num = 1
            for(var j=1;j<=i;j++){
                num *= j;
            }
            sums1+=num;
            document.write('<br />')
        }
        // alert(sums1)

        //先写个函数 
        //设置好结束的条件 

        // 求指定数字的阶乘  
        // 设置好形参  

       /*  function myFunc(){
            myFunc()
        }

        myFunc() */
      
    // 1*1
    // 1*2
    // 1*2*3 

    function test(num){
        if(num == 1){
            return 1;
        }
        return num * test(num-1)
    }

    // test(1) = > 1

    // test(10)  => 10*9 * 8* 7* 6* 5* 4* 3* 2* 1
    // test(9) => 9 * test(8)
    // test(8) => 8* test(7)
    // test(7) => 7* test(6)
    // test(6) => 6* test(5)
    // test(5) => 5* test(4)
    // test(4) => 4* test(3)
    // test(3) => 3* test(2)
    // test(2) => 2* test(1)
    // test(1) => 1



    // 10 * (10-1) * (10-1-1) * (10-1-1-1)

    // 1!+2!+10!

    var sum =0;
    for(var i=1;i<=10;i++){
        sum+=test(i)
    }
    // alert(sum);

            //  num1   num2   cur_num
    // 1      1       2           3 5 8 13 21 34 


    // 结束条件  1  2  =>1 
    // 当前月的结果 是前两个月的和 

        var n = parseInt(prompt('请输入你想看第几个月的兔子'));
        //第一个数
        var num1 = 1;

        //第二个数

        var num2 = 1;

        //声明一个变量记录当前位的数

        var cur_num = 1;

        //前两个数不进入循环，从第三个数开始

        var start = 3;

        while (start <= n) {

            //当前这个位上的数据是前两个之和
            //补齐代码
            cur_num = num1 + num2;
            //numl和num2记录的数据向后挪便于记录下次计算的数据 也就是交换数据

            // num2 给到 num1 
            num1 = num2;
            // cur_num 给到 num2
            num2 = cur_num;
            //补齐代码
            start += 1;

        }

        alert(cur_num);   
        
        
        // 1  1 2 3  5 8 13
        // 写好结束条件 

        function test6(num){
            if(num==1 || num == 2){
                return 1;
            }
            return test6(num-1) + test6(num-2);
        }
        alert(test6(8));
        // test6(1) => 1
        // test6(2) => 1

       /*  test6(10) => test(9)+test(8)// 34+21 
        test(9) => test(8)+test(7) //21+13
        test(8) => test(7)+test(6) //13+8
        test(7) => test(6)+test(5) //8+5
        test(6) => test(5)+test(4) //5+3
        test(5) => test(4)+test(3) // 3+2
        test(4) => test(3)+test(2)  // 2+1 
        test(3) => test(2)+test(1)  */ //1+ 1  2
       

        // num => num-1+ num-2
        // 10 => 9 + 8 
        // 9 => 8 + 7 
        // 7 => 6 + 5
        // 6 => 5 + 4
        // 5 => 4 + 3
        // 4 => 3 + 2 
        // 3 => 2 + 1
        //      1 + 1

            // test(5)
        // test(4)+test(3)
        //test(3)+test(2)+test(2)+test(1)
        //test(2)+test(1)+test(2)+test(2)+test(1)
     // 1+1+1+1+1 = 5

     // 18  22 

     // max = 22 min= 18 
     // max % min = 4
     // max = 18 min= 4 
     // max % min = 2
     // max = 4 min = 2
     // max % min = 0 

     // 2 就是18 和 22 的最大公約數 
    </script>


</body>
</html>